export namespace ConstDefine {
    export class UI {
        /** 主界面 */
        static HomeView: string = `HomeView`;
        /** 关卡选择 */
        static LevelChoose: string = `LevelChoose`;
        /** 游戏界面 */
        static GameMainView: string = `GameMainView`;
        /** 暂停界面 */
        static GamePauseView: string = `GamePauseView`;
        /** 结算界面 */
        static ResultView: string = `ResultView`;
        /** 提示界面 */
        static TipsView: string = `TipsView`;
        /** 地图创建 */
        static MapCreateView: string = `MapCreateView`;
        /** 地图发布 */
        static MapReleaseView: string = `MapReleaseView`;
        /** 新手引导 */
        static GuideView: string = `GuideView`;
        /** 我的地图 */
        static MapLocalView: string = `MapLocalView`;
        /** 带按钮的Tips */
        static ButtonTipsView: string = `ButtonTipsView`;
        /** 登录界面 */
        static LoginView: string = `LoginView`;
    }

    /** 配置 */
    export namespace Config {
        export class App {
            /** 是否显示方块的编号（测试用） */
            static showStarIndex: boolean = false;
        }

        /** 地图配置索引结构 */
        export interface StarConfig {
            /** 配置索引 */
            id: string,
            /** 星星配置 */
            map: Map,
            /** 限定步数 */
            step: number,
            /** 比例 */
            size?: number[],
            /** 星星偏移 */
            offset?: number[],
            /** 星星选择列表 */
            answerStar: number[],
            /** 地图名字 */
            mapName?: string,
        }

        /** 引导配置索引结构 */
        export interface GuideConfig {
            guide: Array<{
                type: number, //指引类型
                index: number, //标识
                text: string, //指引文本
            }>;
        }

        export type Map = number[][];
    }

    export namespace Common {
        /** ui动效 */
        export enum UITransition {
            None = 0,
            ScaleToBig,
        }
        export let UITransitionToName = {
            [UITransition.ScaleToBig]: `ScaleToBig`,
        }
    }

    export namespace Result {
        export interface ResultEventData {
            isWin: boolean,
            level: number,
            pattern: GameMain.Pattern,
            map: Config.StarConfig
        }
    }

    export namespace GameMain {
        /** 游戏模式 */
        export enum Pattern {
            /** 正常模式 */
            normal = 0,
            /** 地图创造模式 */
            create,
            /** 自定义地图模式 */
            custom,
            /** 修改地图模式 */
            rivisions,
        }
    }

    export namespace Guide {
        export interface EventItemData {
            id: number,
            step: number,
            obj: fgui.GButton
        }
    }

    export namespace Tips {
        export interface ButtonTipsEventData {
            buttonNum: number,
            text: string,
            btn1Text?: string,
            btn2Text?: string,
            btn3Text?: string,
            btn1CallBack: Function,
            btn2CallBack?: Function,
            btn3CallBack?: Function,
        }
    }
}